define(["require","jquery","notify_comm","dataTables_comm","String","Dataset"],
    function(require,$,notify_comm,dataTables_comm,String,Dataset){

        var data_tables = null;

        //初始化表格
        var _initTable = function(){

            //初始化异步数据请求
            var ajax_params = {
                url:"/etl/api/pagelist",  //请求URL地址
                data:{}//查询参数
            };
            //列数据 data 对应服务端访问的json 数据 key ,title 表头显示名称
            var columns = [
                {"data":"ip","title":"IP"},
                {"data":"port","title":"端口"},
                {"data":"methor","title":"方法"},
                {"data":"url","title":"URL"},
                {
                    "data":"status",
                    "title":"状态",
                    "render": function(data, type, row) {
                        if(data == "1"){
                            return "启用";
                        }else{
                            return "停用";
                        }
                    }
                },
                {"data":"id","title":"ID","visible": false}
            ];
            //自定义按钮
            var buttons = [
                {
                    "id":"searchData",      //按钮ID
                    "name":"searchData",    //按钮名称
                    "text":"查询数据",   //按钮显示文件
                    "icons":"fa-align-left", //显示图标
                    "callback": _btnSearchClick
                }
            ];
            //默认按钮是否隐藏 true: 隐藏 false:显示 ，不传对应的参数，默认显示按钮
            var default_buttons = [
                {"add":false,"callback":_btnAddClick},//新增按钮
                {"edit":false,"callback":_btnEditClick},//编辑按钮
                {"delete":false,"callback":_btnDeleteClick},//删除按钮
                {"select":true,"callback":null},//选择下拉按钮
                {"export":false,"callback":null}//导出下拉按钮
            ];
            //封装参数
            var options = {
                "id":"etl_api_table", //tableID
                "language":"zh_CN", //语言参数
                "ajax_params":ajax_params, //异步请求参数
                "columns":columns,//表列数据参数
                "buttons":buttons, //自定义按钮参数
                "default_buttons":default_buttons, //默认按钮
                "colReorder":true//列位置调整
            };

            //调用表格初始化方法
            data_tables = dataTables_comm.dataTables_init(options,null);
            $("#etl_api_table").colResizable();//列宽度调整

        };

        //查询
        var _btnSearchClick = function () {
            var param = {
                "methor":$("#param_methor").val(),
                "status":$("#param_status").val()
            };
            var query_params = {"queryData":JSON.stringify(param)};
            $('#etl_api_table').dataTable().fnSettings().ajax.data = query_params; //参数传递，fnSettings 初始化参数不用用 大写的 DataTable(),只能用小写dataTable();
            $('#etl_api_table').dataTable().fnDraw(false);//true刷新页面到第一页，false当前页
        };

        //新增
        var _btnAddClick = function () {
            _resetModal();//重置数据
            $("#etl_api_modal").show();  //点击模态窗口遮罩层会关闭模态窗口的bug
            $("#etl_api_modal").modal({
                backdrop: "static",
                show: false
            });
            $("#etl_api_modal").modal("show");
        };

        //编辑
        var _btnEditClick = function () {

            var rowData =  data_tables.rows('.selected').data().toArray();

            if(String.isEmpty(rowData) || rowData.length == 0){
                notify_comm.errorMSG({"message":"请选择一行数据"});
                return false;
            }
            if(rowData.length > 1){
                notify_comm.errorMSG({"message":"只能选择一行数据进行编辑"});
                return false;
            }

            $("#etl_api_modal").show();  //点击模态窗口遮罩层会关闭模态窗口的bug
            $("#etl_api_modal").modal({
                backdrop: "static",
                show: false
            });
            $("#etl_api_modal").modal("show");

            $("[etl_api-form]").each(function(index,val){
                var idText = $(this) .attr("id");
                var value = rowData[0][idText];
                console.info(idText+"=============="+value);
                $(this).val(value);
            });

        };

        //删除
        var _btnDeleteClick = function () {
            var rowData =  data_tables.rows('.selected').data().toArray();
            if(String.isEmpty(rowData) || rowData.length == 0){
                notify_comm.errorMSG({"message":"请选择一行数据"});
                return false;
            }
            if(rowData.length > 1){
                notify_comm.errorMSG({"message":"只能选择一行数据进行编辑"});
                return false;
            }
            if(!confirm("确认删除吗")){
                return false;
            }
            $.ajax({
                url: "/etl/api/delete",
                type: "POST",
                async: false,
                dataType: "text",
                data: {"id": rowData[0].id},
                success: function (data) {
                    if(data != null && data != ""){
                        notify_comm.successMSG({"message":"操作成功"})
                        _btnSearchClick();
                    }
                }
            });
        };

        //数据保存
        var _submitData = function(){
            $("#submit_etl_defne").on("click",function () {
                var requestData = {};
                $("[etl_api-form]").each(function(index,val){
                    requestData[$(this).attr("id")] = val.value;
                });
                $.ajax({
                    url: '/etl/api/save',
                    async: false,
                    type: 'post',
                    data: {"requestData":JSON.stringify(requestData)},
                    success: function (data) {
                        //关闭模态框
                        $('#etl_api_modal').modal("hide");
                        if(data){
                            notify_comm.successMSG({"message":"操作成功"});
                        }else{
                            notify_comm.errorMSG({"message":"操作失败"});
                        }
                        //重置模态框数据
                        _resetModal();
                        //重新加载数据
                        _btnSearchClick();
                    }
                });
            });
        };

        //重置模态框数据
        var _resetModal = function(){
            $("[etl_api-form]").each(function(index,val){
                $(this).val("");
            });
        };

        //函数初始化
        var init = function(){
            _initTable();
            _submitData();
        };

        //返回
        return {
            init:init
        }

    });